﻿using PdfGeneratorNetFree.PdfXmlParser;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;

namespace PdfXmlParserTest
{
	using PdfGeneratorNetFree.PgnStyle;

	/// <summary>
    ///PdfXmlParserTest のテスト クラスです。すべての
    ///PdfXmlParserTest 単体テストをここに含めます
    ///</summary>
	[TestClass()]
	public class PdfXmlParserTest
	{


		private TestContext testContextInstance;

		/// <summary>
		///現在のテストの実行についての情報および機能を
		///提供するテスト コンテキストを取得または設定します。
		///</summary>
		public TestContext TestContext
		{
			get
			{
				return testContextInstance;
			}
			set
			{
				testContextInstance = value;
			}
		}

		#region 追加のテスト属性
		// 
		//テストを作成するときに、次の追加属性を使用することができます:
		//
		//クラスの最初のテストを実行する前にコードを実行するには、ClassInitialize を使用
		//[ClassInitialize()]
		//public static void MyClassInitialize(TestContext testContext)
		//{
		//}
		//
		//クラスのすべてのテストを実行した後にコードを実行するには、ClassCleanup を使用
		//[ClassCleanup()]
		//public static void MyClassCleanup()
		//{
		//}
		//
		//各テストを実行する前にコードを実行するには、TestInitialize を使用
		//[TestInitialize()]
		//public void MyTestInitialize()
		//{
		//}
		//
		//各テストを実行した後にコードを実行するには、TestCleanup を使用
		//[TestCleanup()]
		//public void MyTestCleanup()
		//{
		//}
		//
		#endregion


		/// <summary>
		///GetPropertyInvoke のテスト
		///</summary>
		[TestMethod]
		public void GetPropertyInvokeTest()
		{
			var expected = DashType.DashDot;
			var actual = (DashType)PdfXmlParser.GetPropertyInvoke<DashType>(null, "DashDot");
			CollectionAssert.AreEqual(expected.BaseDashArray, actual.BaseDashArray);
		}


		/// <summary>
		///MethodInvoke のテスト
		///</summary>
		[TestMethod]
		public void MethodInvokeTest()
		{
			var actual = (PaperSize)PdfXmlParser.MethodInvoke(new PaperSize(), "Custom", 10F, 20F);
			var expected = PaperSize.Custom(10, 20);
			Assert.AreEqual(expected, actual);	//PaperSizeは構造体なので、この比較が可能。
		}
	}
}
